
// 注：使用时isHas传入的顺序和页面el-table-column的顺序相同
// isHas ['loginName', 'proCount', 'allProMoney']  需要合并的全部字段
export const dataMethod = (tableData, isHas) => {
  const spanObj = {} // spanObj 存储每个key 对应的合并值
  const pos = {} // key合并值得索引
  tableData.forEach((row, index) => {
    for (const k in row) {
      if (index === 0) {
        spanObj[k] = [1]
        pos[k] = 0
        continue
      }
      // 获取上一条数据进行对比
      const preRow = tableData[index - 1]
      // 不需要合并的字段返回 -1，合并根据索引位置截取需要合并的字段
      const currentIndex = isHas.findIndex(keyName => keyName === k)
      if (currentIndex === -1) {
        spanObj[k].push(1)
        pos[k] = index
        continue
      }
      // 获取当前key值 前面需要判断的重复字段数组
      const checkArr = isHas.slice(0, currentIndex + 1)
      // 每个key对应的value相同则合并
      const isRepeat = checkArr.every(keyName => row[keyName] === preRow[keyName])
      if (isRepeat) {
        // 如果上一级和当前一级相当，数组就加1 数组后面就添加一个0
        spanObj[k][pos[k]] += 1
        spanObj[k].push(0)
      } else {
        spanObj[k].push(1)
        pos[k] = index
      }
    }
  })
  return spanObj
}

// 表格单元格合并多列
// const [spanObj, pos] = [{}, {}]
// spanObj 存储每个key 对应的合并值
// pos  存储的是 key合并值得索引

// isH ['loginName', 'proCount', 'allProMoney']  需要合并的字段
// keyName  指定一个key对应的value不同后面字段则不再合并
// export const dataMethod = (data, isH, keyName) => {
//   // 循环数据
//   for (const i in data) {
//     const dataI = data[i]
//     // 循环数据内对象，查看有多少key
//     for (const j in dataI) {
//       // 如果只有一条数据时默认为1即可，无需合并
//       if (i === '0') {
//         spanObj[j] = [1]
//         pos[j] = 0
//       } else {
//         const [e, k] = [dataI, data[i - 1]]
//         // 判断上一级别是否存在, 存在当前的key是否和上级别的key是否一样
//         const flag = k && e[j] === k[j]
//         keyName = keyName || j
//         // 判断是否有数组规定只允许那几列需要合并单元格的
//         if (flag && e[keyName] === k[keyName] && isH.includes(j)) {
//           // 如果上一级和当前一级相当，数组就加1 数组后面就添加一个0
//           spanObj[j][pos[j]] += 1
//           spanObj[j].push(0)
//         } else {
//           spanObj[j].push(1)
//           pos[j] = i
//         }
//       }
//     }
//   }
//   return spanObj
// }
